package base.dao;

import java.util.List;
import java.util.Map;

import base.PageInfo;

public interface IHibernateDao<T> {
	
	/**
	 * 保存
	 * @param object
	 */
	public void save(Object object);
	
	/**
	 * 更新
	 * @param object
	 */
	public void mergeAndUpdate(Object object);
	
	/**
	 * 删除
	 * @param object
	 */
	public void del(Object object);
	
	/**
	 * 执行sql
	 * update or delete
	 * @param sql
	 */
	public void executeSql(String sql);
	
	/**
	 * 执行hql
	 * update or delete
	 * @param hql
	 */
	public void executeHql(String hql);
	
	/**
	 * 查询实体通过ID
	 * @param className
	 * @param id
	 * @return
	 */
	public T queryEntityById(Class<T> className,String id);
	
	/**
	 * 查询对象通过ID
	 * @param className
	 * @param id
	 * @return
	 */
	public Object queryObjectById(Class<?> className,String id);
	
	/**
	 * 查询列表通过SQL
	 * @param sql
	 * @return
	 */
	public List<Map<String,Object>> queryListBySql(String sql);
	
	/**
	 * 查询列表通过HQL
	 * @param hql
	 * @return
	 */
	public List<T> queryListByHql(String hql);
	
	/**
	 * 查询分页通过SQL
	 * @param pageInfo
	 * @param sql
	 * @return
	 */
	public PageInfo queryPageListBySql(PageInfo pageInfo,String sql);
	
	/**
	 * 查询分页通过HQL
	 * @param pageInfo
	 * @param hql
	 * @return
	 */
	public PageInfo queryPageListByHql(PageInfo pageInfo,String hql);

}
